package vip.liux.front.application.service.coupon;

import lombok.Data;
import lombok.EqualsAndHashCode;
import vip.liux.contracts.shared.enums.coupon.UsedTag;
import vip.liux.core.model.NameValue;

import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = true)
public class UserCouponDto extends AbsCouponDto {

    private Long id;

    private LocalDateTime creationTime;

    /**
     * 优惠券编号
     */
    private String couponNo;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 优惠券码
     */
    private String code;

    /**
     * 使用订单订单编号
     */
    private String orderNo;

    /**
     * 使用状态（0:未使用，1：已使用）
     */
    private UsedTag usedTag;

    /**
     * 使用时间
     */
    private LocalDateTime usedTime;

    /**
     * 领取时间
     */
    private LocalDateTime receiveTime;

    private NameValue<Integer> state;

    public NameValue<Integer> getState() {
        if (usedTag == UsedTag.USED) {
            return new NameValue<>("已使用", 0);
        } else if (getUseEnd().isBefore(LocalDateTime.now())) {
            return new NameValue<>("已过期", 0);
        } else {
            return new NameValue<>("正常", 1);
        }
    }
}
